
'''
row - 当前行
board_size - 棋盘的尺寸
placement - 皇后放置的位置
'''
def non_attacking_queen(row, board_size, placement):
    if row == board_size:
        # 我们找到了一个可用的非攻击布局
        # 递归的终结条件
        return 1

    result = 0

    for col in range(0, board_size):
        # col 当前放置了皇后的列
        '''
        row 行 col 列 放置皇后是不是一个合法的位置
        如果是合法的位置 -> row += 1
        如果不是合法位置 -> col += 1
        '''

        if is_non_attacking_placement(row, col, placement):
            result += non_attacking_queen(row + 1, board_size, placement)

    return result

